<!doctype html><html lang=en-us dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="DB数据库 🖥 📊🖥 # MongoDB笔记 # 学习网站：http://www.runoob.com/mongodb/mongodb-tutorial.html (其学习教程还挺可观，很多，不过还不清楚好不好)
数据迁移 # insert into device_data_current select * from device_data; 使用 mysqldump # 很慢 很大 很方便 很！不好！使用！在使用&ndash;host时 下面命令没一次正常工作的，很难受
mysqldump -h192.168.0.25 -u{user} -p{passwd} {dbname} {tablename} > {tablename}.sql sed -i 's/{tablename}/{new_tablename}/g' {tablename}.sql mysql -u{user} -p{passwd} {dbname} < {table}.sql # 增加条数限制 bash-4.2# mysqldump -u{user} -p{passwd} test demo --host {host} --where=&#34;true limit 5000&#34; > demo.sql 还是用自己写的脚本好使 sql_one2one.py
注意事项 # Mongo 数据库锁 # mongo只提供库级粒度锁，所以一个写操作锁定时，其他读写操作都等待… 所以这个导致了Mongo多线程写操作反而没有一个线程写来的快？
前台建立索引时，Mongo需占用一个写锁（且不同上述、不会临时放弃） 为避免此问题需采用background方式"><meta name=theme-color content="#FFFFFF"><meta name=color-scheme content="light dark"><meta property="og:title" content="数据库-MongoDB篇"><meta property="og:description" content="DB数据库 🖥 📊🖥 # MongoDB笔记 # 学习网站：http://www.runoob.com/mongodb/mongodb-tutorial.html (其学习教程还挺可观，很多，不过还不清楚好不好)
数据迁移 # insert into device_data_current select * from device_data; 使用 mysqldump # 很慢 很大 很方便 很！不好！使用！在使用&ndash;host时 下面命令没一次正常工作的，很难受
mysqldump -h192.168.0.25 -u{user} -p{passwd} {dbname} {tablename} > {tablename}.sql sed -i 's/{tablename}/{new_tablename}/g' {tablename}.sql mysql -u{user} -p{passwd} {dbname} < {table}.sql # 增加条数限制 bash-4.2# mysqldump -u{user} -p{passwd} test demo --host {host} --where=&#34;true limit 5000&#34; > demo.sql 还是用自己写的脚本好使 sql_one2one.py
注意事项 # Mongo 数据库锁 # mongo只提供库级粒度锁，所以一个写操作锁定时，其他读写操作都等待… 所以这个导致了Mongo多线程写操作反而没有一个线程写来的快？
前台建立索引时，Mongo需占用一个写锁（且不同上述、不会临时放弃） 为避免此问题需采用background方式"><meta property="og:type" content="article"><meta property="og:url" content="http://example.org/docs/programmer/database/note-of-db-data/"><meta property="article:section" content="docs"><meta property="article:published_time" content="2018-05-15T09:51:09+00:00"><meta property="article:modified_time" content="2018-05-15T09:51:09+00:00"><title>数据库-MongoDB篇 | Ian's Blog</title>
<link rel=manifest href=/manifest.json><link rel=icon href=/favicon.png type=image/x-icon><link rel=stylesheet href=/book.min.c58292d36b18b675680ab9baea2029204537b839ea72f258746ec0f32ce8d6c8.css integrity="sha256-xYKS02sYtnVoCrm66iApIEU3uDnqcvJYdG7A8yzo1sg=" crossorigin=anonymous><script defer src=/flexsearch.min.js></script><script defer src=/en.search.min.80b0c12c6a3982c23bab5eb1d10c75b4cf8bfbaa1c7e183729648ce8a09207d7.js integrity="sha256-gLDBLGo5gsI7q16x0Qx1tM+L+6ocfhg3KWSM6KCSB9c=" crossorigin=anonymous></script></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control>
<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><span>Ian's Blog</span></a></h2><div class=book-search><input type=text id=book-search-input placeholder=Search aria-label=Search maxlength=64 data-hotkeys=s/><div class="book-search-spinner hidden"></div><ul id=book-search-results></ul></div><ul><li class=book-section-flat><a href=/docs/programmer/>程序员笔记</a><ul><li><input type=checkbox id=section-d5f99046a51e5e750b61f2e037945fcc class=toggle>
<label for=section-d5f99046a51e5e750b61f2e037945fcc class="flex justify-between"><a role=button>基础工具和配置</a></label><ul><li><a href=/docs/programmer/basetc/%E6%96%87%E6%9C%AC%E4%B8%89%E5%89%91%E5%AE%A2/>文本三剑客</a></li><li><a href=/docs/programmer/basetc/tmux/>Tmux使用笔记</a></li><li><a href=/docs/programmer/basetc/obsidian%E6%80%9D%E7%BB%B4%E5%AF%BC%E5%9B%BE%E6%8F%92%E4%BB%B6/>Obsidian思维导图插件</a></li><li><a href=/docs/programmer/basetc/for_china/>各个软件换源</a></li><li><a href=/docs/programmer/basetc/tipsofvim/>tip Of vim</a></li><li><a href=/docs/programmer/basetc/editer/>编辑器使用</a></li><li><a href=/docs/programmer/basetc/bash/>Bash</a></li><li><a href=/docs/programmer/basetc/gitbook/>Gitbook</a></li><li><a href=/docs/programmer/basetc/vim/>Vim</a></li><li><a href=/docs/programmer/basetc/%E5%AE%88%E6%8A%A4%E8%BF%9B%E7%A8%8B/>supervisor</a></li></ul></li><li><input type=checkbox id=section-8658298e10b544e890095f646916165a class=toggle>
<label for=section-8658298e10b544e890095f646916165a class="flex justify-between"><a href=/docs/programmer/cloudnative/>云原生</a></label><ul><li><input type=checkbox id=section-31d3b02fd4a132635e483e7e756058ea class=toggle>
<label for=section-31d3b02fd4a132635e483e7e756058ea class="flex justify-between"><a href=/docs/programmer/cloudnative/redis/>中间件</a></label><ul><li><a href=/docs/programmer/cloudnative/redis/python-redis-%E5%AE%A2%E6%88%B7%E7%AB%AF/>Python Redis 客户端</a></li><li><a href=/docs/programmer/cloudnative/redis/bigkey-and-hotkey/>大key、热key问题</a></li><li><a href=/docs/programmer/cloudnative/redis/the-basics-of-redis/>Redis基础</a></li><li><a href=/docs/programmer/cloudnative/redis/advanced-knowledge-of-redis/>Redis进阶</a></li><li><a href=/docs/programmer/cloudnative/redis/%E4%BD%BF%E7%94%A8%E5%91%BD%E4%BB%A4/>Redis常用命令</a></li></ul></li><li><input type=checkbox id=section-62d608ed890b3abc76dae78ccfcab912 class=toggle>
<label for=section-62d608ed890b3abc76dae78ccfcab912 class="flex justify-between"><a role=button>k8s</a></label><ul><li><a href=/docs/programmer/cloudnative/k8s/elk%E5%9C%A8k8s%E4%B8%8A%E7%9A%84%E9%83%A8%E7%BD%B2%E4%BD%BF%E7%94%A8%E7%A4%BA%E4%BE%8B/>elk在k8s上的部署使用示例</a></li><li><a href=/docs/programmer/cloudnative/k8s/k8s-%E9%85%8D%E5%A5%97%E8%AF%B4%E6%98%8E/>k8s 配套说明</a></li><li><a href=/docs/programmer/cloudnative/k8s/k8s-%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/>k8s技术分享</a></li><li><a href=/docs/programmer/cloudnative/k8s/k8s%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4%E5%92%8C%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E8%A7%A3%E6%9E%90/>k8s学习-常用命令和配置文件</a></li><li><a href=/docs/programmer/cloudnative/k8s/argo-workflow%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95%E5%92%8C%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF%E5%88%86%E6%9E%90/>Argo Workflow性能测试和使用场景分析</a></li><li><a href=/docs/programmer/cloudnative/k8s/argo-%E4%BD%BF%E7%94%A8%E8%AE%B0%E5%BD%95/>Argo 使用记录</a></li></ul></li><li><input type=checkbox id=section-b828bf3d116bc282da9db25a06bf908e class=toggle>
<label for=section-b828bf3d116bc282da9db25a06bf908e class="flex justify-between"><a role=button>中间件</a></label><ul><li><a href=/docs/programmer/cloudnative/middleware/kafka-%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8/>Kafka 安装和使用</a></li></ul></li><li><a href=/docs/programmer/cloudnative/%E5%AE%B9%E5%99%A8/note-of-podman/>Podman</a></li><li><a href=/docs/programmer/cloudnative/nginx%E5%AE%9E%E7%94%A8%E9%85%8D%E7%BD%AE/>Nginx实用配置</a></li><li><a href=/docs/programmer/cloudnative/uwsgi-%E5%A4%84%E7%90%86%E8%AE%B0%E5%BD%95/>uwsgi 处理记录</a></li><li><a href=/docs/programmer/cloudnative/note-of-docker/>Docker</a></li><li><a href=/docs/programmer/cloudnative/%E5%AE%B9%E5%99%A8/note-of-docker/>Docker</a></li><li><a href=/docs/programmer/cloudnative/fastapi/>Django的建站的(｡･･)ﾉﾞ</a></li><li><a href=/docs/programmer/cloudnative/nginx-%E9%AB%98%E5%8F%AF%E7%94%A8/>Nginx高可用</a></li><li><a href=/docs/programmer/cloudnative/notesdjango/>Django的建站的(｡･･)ﾉﾞ</a></li><li><a href=/docs/programmer/cloudnative/sonar-%E4%BB%A3%E7%A0%81%E9%9D%99%E6%80%81%E6%A3%80%E6%9F%A5/>Sonar 代码静态检查</a></li></ul></li><li><input type=checkbox id=section-883e27361d38e16afb68faff3435ac0b class=toggle>
<label for=section-883e27361d38e16afb68faff3435ac0b class="flex justify-between"><a role=button>机器学习</a></label><ul><li><a href=/docs/programmer/ml/stable-diffusion/>AI画图</a></li><li><a href=/docs/programmer/ml/%E7%88%AC%E8%99%AB/>爬虫</a></li><li><a href=/docs/programmer/ml/paddle/>Paddle</a></li><li><a href=/docs/programmer/ml/tensorflow/>Tensorflow</a></li><li><a href=/docs/programmer/ml/opencv/>OpenCV</a></li><li><a href=/docs/programmer/ml/yolo/>Demo Test项目中的一些东西</a></li><li><a href=/docs/programmer/ml/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E5%B8%B8%E7%94%A8%E5%BA%93%E5%9F%BA%E6%9C%AC%E7%94%A8%E6%B3%95/>机器学习库</a></li></ul></li><li><input type=checkbox id=section-0bf4f4329214e20fa67ca3e12c6aad0c class=toggle>
<label for=section-0bf4f4329214e20fa67ca3e12c6aad0c class="flex justify-between"><a role=button>平台</a></label><ul><li><a href=/docs/programmer/platforms/ubuntu/>Ubuntu</a></li><li><a href=/docs/programmer/platforms/%E9%98%BF%E9%87%8C%E4%BA%91%E4%BD%BF%E7%94%A8/>阿里云使用</a></li><li><a href=/docs/programmer/platforms/wps-for-linux/>WPS for Linux</a></li><li><a href=/docs/programmer/platforms/appsflyer/>AppsFlyer-外网移动归因营销分析平台</a></li></ul></li><li><input type=checkbox id=section-bf4e0d6f0b81f7b3ec08ed1fc66b874d class=toggle>
<label for=section-bf4e0d6f0b81f7b3ec08ed1fc66b874d class="flex justify-between"><a href=/docs/programmer/langs/>编程语言</a></label><ul><li><input type=checkbox id=section-771df6c720301e69f1715f7fc174ac3d class=toggle>
<label for=section-771df6c720301e69f1715f7fc174ac3d class="flex justify-between"><a role=button>Python</a></label><ul><li><a href=/docs/programmer/langs/python/sqlalchemy/>SqlAlchemy - 数据库Orm</a></li><li><a href=/docs/programmer/langs/python/pypi/>PyPi使用说明</a></li><li><a href=/docs/programmer/langs/python/pytest/>PyTest</a></li><li><a href=/docs/programmer/langs/python/paramiko-%E4%BD%BF%E7%94%A8-sshsftp/>Paramiko 使用 Ssh&amp;sftp</a></li><li><a href=/docs/programmer/langs/python/%E5%A4%9A%E7%BA%BF%E7%A8%8B%E5%A4%9A%E8%BF%9B%E7%A8%8B/>Python 多线程多进程</a></li><li><a href=/docs/programmer/langs/python/notespython/>Python 常用库</a></li><li><a href=/docs/programmer/langs/python/notespython/>Python 笔记</a></li><li><a href=/docs/programmer/langs/python/py%E5%B0%8F%E5%B7%A5%E5%85%B7%E5%92%8C%E5%8A%9F%E8%83%BD%E6%80%A7%E6%96%B9%E6%B3%95/>Py小工具和功能性方法</a></li><li><a href=/docs/programmer/langs/python/notespython/>解决问题</a></li></ul></li><li><input type=checkbox id=section-9f8ac8f06e138c7ac13ff61f23b4d497 class=toggle>
<label for=section-9f8ac8f06e138c7ac13ff61f23b4d497 class="flex justify-between"><a role=button>Golang</a></label><ul><li><a href=/docs/programmer/langs/golang/advanced-knowledge-of-golang/>Golang进阶笔记</a></li><li><a href=/docs/programmer/langs/golang/noteofgoexp/>Golang进阶笔记</a></li><li><a href=/docs/programmer/langs/golang/note-of-golang/>Golang笔记</a></li><li><a href=/docs/programmer/langs/golang/noteofgolang/>Golang笔记</a></li></ul></li><li><a href=/docs/programmer/langs/cmake/>CMake 使用Tips</a></li><li><a href=/docs/programmer/langs/tips-of-debugers/>Tips of debuggers</a></li><li><a href=/docs/programmer/langs/tips-of-markdown/>Tips of MarkDown</a></li><li><a href=/docs/programmer/langs/java/notesjava/>愉快的Java(happy to learn the fuck java)</a></li><li><a href=/docs/programmer/langs/note-for-fmtdata/>数据格式笔记</a></li></ul></li><li><input type=checkbox id=section-de7bfad1d124522974cdf8addfbb23f2 class=toggle>
<label for=section-de7bfad1d124522974cdf8addfbb23f2 class="flex justify-between"><a role=button>Net</a></label><ul><li><a href=/docs/programmer/net/%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B/>网络编程</a></li><li><a href=/docs/programmer/net/nginx%E5%AE%9E%E7%94%A8%E9%85%8D%E7%BD%AE/>Nginx实用配置</a></li><li><a href=/docs/programmer/net/tips-of-grpc/>gRpc使用小记</a></li><li><a href=/docs/programmer/net/epoll%E5%AE%9E%E7%8E%B0/>Epoll实现</a></li><li><a href=/docs/programmer/net/net/>Epoll实现</a></li></ul></li><li><input type=checkbox id=section-4446dd07527142b855f26d7cc8f0e617 class=toggle checked>
<label for=section-4446dd07527142b855f26d7cc8f0e617 class="flex justify-between"><a href=/docs/programmer/database/>Database</a></label><ul><li><a href=/docs/programmer/database/mongodb/>Mongodb使用记录</a></li><li><a href=/docs/programmer/database/dgraph/>Dgraph使用小记</a></li><li><a href=/docs/programmer/database/note-of-db-data-mongodb/>数据库-MongoDB篇</a></li><li><a href=/docs/programmer/database/note-of-db-data/ class=active>数据库-MongoDB篇</a></li><li><a href=/docs/programmer/database/note-of-db-data-mysql/>数据库-MySQL篇</a></li></ul></li><li><input type=checkbox id=section-7e5360c5e7954906b897ed79085884b6 class=toggle>
<label for=section-7e5360c5e7954906b897ed79085884b6 class="flex justify-between"><a href=/docs/programmer/gui/>图形用户界面-GUI</a></label><ul><li><a href=/docs/programmer/gui/pyinstaller-python%E6%89%93%E5%8C%85/>python打包</a></li><li><a href=/docs/programmer/gui/pyinstaller/>python打包</a></li><li><a href=/docs/programmer/gui/qt/>Qt/PySide</a></li><li><a href=/docs/programmer/gui/noteofvn_py/>Vn.Py学习笔记（Python交易平台框架）</a></li><li><a href=/docs/programmer/gui/vn.py%E7%AC%94%E8%AE%B0-%E4%BA%A4%E6%98%93%E5%B9%B3%E5%8F%B0%E5%AE%A2%E6%88%B7%E7%AB%AF/>Vn.Py学习笔记（Python交易平台框架）</a></li><li><a href=/docs/programmer/gui/notespython/>图形化界面 （Python Gui）</a></li><li><a href=/docs/programmer/gui/notespython/>图形化界面 （Python Gui）</a></li></ul></li><li><input type=checkbox id=section-ddcbe632dc99a9fb372422dada8ee641 class=toggle>
<label for=section-ddcbe632dc99a9fb372422dada8ee641 class="flex justify-between"><a role=button>OS操作系统问题处理</a></label><ul><li><a href=/docs/programmer/os/install_some/>安装问题</a></li><li><a href=/docs/programmer/os/android/>安卓</a></li><li><a href=/docs/programmer/os/freebsd/>FreeBSD</a></li><li><a href=/docs/programmer/os/note-of-linux/>Linux 笔记</a></li><li><a href=/docs/programmer/os/npm/>Npm</a></li><li><a href=/docs/programmer/os/git/>Git</a></li><li><a href=/docs/programmer/os/problem-of-windows/>Windows 爬坑记</a></li><li><a href=/docs/programmer/os/tips-of-problems/>解决问题记录笔记</a></li></ul></li><li><input type=checkbox id=section-d325c59fc6513e1b1e05a60b192d4973 class=toggle>
<label for=section-d325c59fc6513e1b1e05a60b192d4973 class="flex justify-between"><a href=/docs/programmer/hardware/>硬件</a></label><ul><li><a href=/docs/programmer/hardware/raspberrypi/>Raspberry Pi</a></li><li><a href=/docs/programmer/hardware/screen/>Screen</a></li></ul></li></ul></li><li class=book-section-flat><span>建模和游戏</span><ul><li><a href=/docs/3dgame/blender/>Blender</a></li><li><a href=/docs/3dgame/noteofue4/>UE4 笔记</a></li></ul></li><li class=book-section-flat><a href=/docs/example/>Hugo特殊Markdown语法说明</a><ul><li><a href=/docs/example/table-of-contents/>Table of Contents</a><ul><li><a href=/docs/example/table-of-contents/with-toc/>With ToC</a></li><li><a href=/docs/example/table-of-contents/without-toc/>Without ToC</a></li></ul></li><li><a href=/docs/example/shortcodes/buttons/>Buttons</a></li><li><a href=/docs/example/shortcodes/columns/>Columns</a></li><li><a href=/docs/example/shortcodes/details/>Details</a></li><li><a href=/docs/example/shortcodes/expand/>Expand</a></li><li><a href=/docs/example/shortcodes/hints/>Hints</a></li><li><a href=/docs/example/shortcodes/tabs/>Tabs</a></li></ul></li></ul><ul><li><a href=/posts/>Blog</a></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu>
</label><strong>数据库-MongoDB篇</strong>
<label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#mongodb笔记>MongoDB笔记</a></li><li><a href=#数据迁移>数据迁移</a><ul><li><a href=#使用-mysqldump>使用 <code>mysqldump</code></a></li><li><a href=#font-colorff5000注意事项font>注意事项</a></li><li><a href=#操作命令简单记录>操作命令简单记录</a></li><li><a href=#更新添加文档>更新、添加文档</a></li><li><a href=#导入csv文件>导入csv文件</a></li><li><a href=#导出>导出</a></li><li><a href=#改>改</a></li><li><a href=#排序>排序</a></li><li><a href=#mongodb-索引--------font-colorcrimson建立索引干嘛font>MongoDB 索引 （建立索引干嘛……）</a></li><li><a href=#聚合>聚合</a></li><li><a href=#条件操作符>条件操作符</a></li><li><a href=#执行顺序>执行顺序</a></li><li><a href=#数据导出>数据导出</a></li><li><a href=#数据导入>数据导入</a></li><li><a href=#linux-下使用robo3t错误>Linux 下使用Robo3T错误</a></li><li><a href=#for-python>For Python</a></li><li><a href=#查询库名>查询库名</a></li><li><a href=#查询集合名>查询集合名</a></li></ul></li></ul></nav></aside></header><article class=markdown><h1 id=db数据库-->DB数据库 🖥 📊🖥
<a class=anchor href=#db%e6%95%b0%e6%8d%ae%e5%ba%93-->#</a></h1><p><img src=https://webassets.mongodb.com/_com_assets/cms/kmxrodmee9int5s1v-HP_Highlight%202.svg alt=db></p><h2 id=mongodb笔记>MongoDB笔记
<a class=anchor href=#mongodb%e7%ac%94%e8%ae%b0>#</a></h2><p>学习网站：<a href=http://www.runoob.com/mongodb/mongodb-tutorial.html>http://www.runoob.com/mongodb/mongodb-tutorial.html</a>
(其学习教程还挺可观，很多，不过还不清楚好不好)</p><h2 id=数据迁移>数据迁移
<a class=anchor href=#%e6%95%b0%e6%8d%ae%e8%bf%81%e7%a7%bb>#</a></h2><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-sql data-lang=sql><span style=display:flex><span><span style=color:#66d9ef>insert</span> <span style=color:#66d9ef>into</span> device_data_current <span style=color:#66d9ef>select</span> <span style=color:#f92672>*</span> <span style=color:#66d9ef>from</span> device_data;
</span></span></code></pre></div><h3 id=使用-mysqldump>使用 <code>mysqldump</code>
<a class=anchor href=#%e4%bd%bf%e7%94%a8-mysqldump>#</a></h3><blockquote><p>很慢 很大 很方便
很！不好！使用！在使用&ndash;host时 下面命令没一次正常工作的，很难受</p></blockquote><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>mysqldump -h192.168.0.25 -u<span style=color:#f92672>{</span>user<span style=color:#f92672>}</span> -p<span style=color:#f92672>{</span>passwd<span style=color:#f92672>}</span> <span style=color:#f92672>{</span>dbname<span style=color:#f92672>}</span> <span style=color:#f92672>{</span>tablename<span style=color:#f92672>}</span> &gt; <span style=color:#f92672>{</span>tablename<span style=color:#f92672>}</span>.sql
</span></span><span style=display:flex><span>sed -i <span style=color:#e6db74>&#39;s/{tablename}/{new_tablename}/g&#39;</span> <span style=color:#f92672>{</span>tablename<span style=color:#f92672>}</span>.sql
</span></span><span style=display:flex><span>mysql -u<span style=color:#f92672>{</span>user<span style=color:#f92672>}</span> -p<span style=color:#f92672>{</span>passwd<span style=color:#f92672>}</span> <span style=color:#f92672>{</span>dbname<span style=color:#f92672>}</span> &lt; <span style=color:#f92672>{</span>table<span style=color:#f92672>}</span>.sql
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># 增加条数限制</span>
</span></span><span style=display:flex><span>bash-4.2# mysqldump -u<span style=color:#f92672>{</span>user<span style=color:#f92672>}</span> -p<span style=color:#f92672>{</span>passwd<span style=color:#f92672>}</span> test demo --host <span style=color:#f92672>{</span>host<span style=color:#f92672>}</span> --where<span style=color:#f92672>=</span><span style=color:#e6db74>&#34;true limit 5000&#34;</span> &gt; demo.sql
</span></span></code></pre></div><p>还是用自己写的脚本好使 <a href=https://github.com/IanVzs/fastapi_on_docker/blob/crud/app/scripts/sql_one2one.py>sql_one2one.py</a></p><h3 id=font-colorff5000注意事项font>注意事项
<a class=anchor href=#font-colorff5000%e6%b3%a8%e6%84%8f%e4%ba%8b%e9%a1%b9font>#</a></h3><h4 id=mongo-数据库锁>Mongo 数据库锁
<a class=anchor href=#mongo-%e6%95%b0%e6%8d%ae%e5%ba%93%e9%94%81>#</a></h4><p>mongo只提供库级粒度锁，所以一个写操作锁定时，其他读写操作都等待… 所以这个导致了Mongo多线程写操作反而没有一个线程写来的快？</p><p>前台建立索引时，<code>Mongo</code>需占用一个写锁（且不同上述、不会临时放弃） 为避免此问题需采用<code>background</code>方式</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-ruby data-lang=ruby><span style=display:flex><span>    db<span style=color:#f92672>.</span>posts<span style=color:#f92672>.</span>ensureIndex({<span style=color:#e6db74>user_id</span>: <span style=color:#ae81ff>1</span>})  <span style=color:#75715e>#此方式将引起全面战争</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>    db<span style=color:#f92672>.</span>posts<span style=color:#f92672>.</span>ensureIndex({<span style=color:#e6db74>user_id</span>: <span style=color:#ae81ff>1</span>}<span style=color:#960050;background-color:#1e0010>，</span> {<span style=color:#e6db74>background</span>: <span style=color:#ae81ff>1</span>}) <span style=color:#75715e># 这个就比较和平</span>
</span></span></code></pre></div><h3 id=操作命令简单记录>操作命令简单记录
<a class=anchor href=#%e6%93%8d%e4%bd%9c%e5%91%bd%e4%bb%a4%e7%ae%80%e5%8d%95%e8%ae%b0%e5%bd%95>#</a></h3><h4 id=创建插入>创建、插入
<a class=anchor href=#%e5%88%9b%e5%bb%ba%e6%8f%92%e5%85%a5>#</a></h4><pre><code>use DATABASE_NAME   #如果数据库不存在，则创建数据库，否则切换到指定数据库。
show dbs        #查看所有数据库“name    size”
</code></pre><p>刚创建的数据库，如没有内容则不现实在其中</p><pre><code>db.runoob.insert({&quot;name&quot;:&quot;教程&quot;})       #插入数据
</code></pre><h4 id=删除>删除
<a class=anchor href=#%e5%88%a0%e9%99%a4>#</a></h4><pre><code>db.dropDatabase()       #删除当前数据库，如未选择则删除test
db.collection.drop()        #删除集合
db.site.drop()          #：如删除site集合
</code></pre><h5 id=删除重复数据>删除重复数据
<a class=anchor href=#%e5%88%a0%e9%99%a4%e9%87%8d%e5%a4%8d%e6%95%b0%e6%8d%ae>#</a></h5><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-mysql data-lang=mysql><span style=display:flex><span>    <span style=color:#66d9ef>delete</span> <span style=color:#66d9ef>from</span> alarm_calendar <span style=color:#66d9ef>where</span> id <span style=color:#66d9ef>not</span> <span style=color:#66d9ef>in</span> (<span style=color:#66d9ef>SELECT</span> maxid <span style=color:#66d9ef>from</span> (<span style=color:#66d9ef>SELECT</span> <span style=color:#a6e22e>MAX</span>(id) <span style=color:#66d9ef>as</span> maxid, 
</span></span><span style=display:flex><span>    <span style=color:#a6e22e>CONCAT</span>(user_id,<span style=color:#66d9ef>time</span>,generic_name) <span style=color:#66d9ef>as</span> nameAndCode <span style=color:#66d9ef>from</span> alarm_calendar <span style=color:#66d9ef>GROUP</span> <span style=color:#66d9ef>BY</span> nameAndCode) t);
</span></span></code></pre></div><p>根据<code>user_id</code>, <code>time</code>, <code>generic_name</code>来打包重复，将重复数据删掉, 留下<code>max</code>，在自增里面即：最新数据</p><h4 id=插入文档>插入文档
<a class=anchor href=#%e6%8f%92%e5%85%a5%e6%96%87%e6%a1%a3>#</a></h4><pre><code>db.COLLECTION_NAME.insert(document)
</code></pre><hr><pre><code>db.col.insert({title: 'MongoDB 教程', 
    description: 'MongoDB 是一个 Nosql 数据库',
    by: '菜鸟教程',     
    url: 'http://www.runoob.com',       
    tags: ['mongodb', 'database', 'NoSQL'], 
    likes: 100
    })      # 例如这样
</code></pre><p>db.col.find() # 查看已插入文档</p><p>也可以将document=括号里要插入内容，然后插入document变量，效果一样。</p><h5 id=32版本新加>3.2版本新加
<a class=anchor href=#32%e7%89%88%e6%9c%ac%e6%96%b0%e5%8a%a0>#</a></h5><pre><code>db.collection.insertOne()       #向指定集合中插入一条文档数据
db.collection.insertMany()  #向指定集合中插入多条文档数据
</code></pre><hr><pre><code>插入单条数据
var document = db.collection.insertOne({&quot;a&quot;: 3})
</code></pre><blockquote><p>document
{
&ldquo;acknowledged&rdquo; : true,
&ldquo;insertedId&rdquo; : ObjectId(&ldquo;571a218011a82a1d94c02333&rdquo;)
}</p></blockquote><pre><code>插入多条数据    
var res = db.collection.insertMany([{&quot;b&quot;: 3}, {'c': 4}])
</code></pre><blockquote><p>res
{
&ldquo;acknowledged&rdquo; : true,
&ldquo;insertedIds&rdquo; : [
ObjectId(&ldquo;571a22a911a82a1d94c02337&rdquo;),
ObjectId(&ldquo;571a22a911a82a1d94c02338&rdquo;)
]
}</p></blockquote><h3 id=更新添加文档>更新、添加文档
<a class=anchor href=#%e6%9b%b4%e6%96%b0%e6%b7%bb%e5%8a%a0%e6%96%87%e6%a1%a3>#</a></h3><pre><code>db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})      
#更新标题

db.collection.save(     
#通过传入的文档来替换已有文档
&lt;document&gt;,
{
writeConcern: &lt;document&gt;
})
</code></pre><blockquote><p>参数说明：
document : 文档数据。
writeConcern : 可选，抛出异常的级别。</p></blockquote><p>eg： 实例中替换了 _id 为 56064f89ade2f21f36b03136 的文档数据：</p><pre><code>db.col.save({
&quot;_id&quot; : ObjectId(&quot;56064f89ade2f21f36b03136&quot;),
&quot;title&quot; : &quot;MongoDB&quot;,
&quot;description&quot; : &quot;MongoDB 是一个 Nosql 数据库&quot;,
&quot;by&quot; : &quot;Runoob&quot;,
&quot;url&quot; : &quot;http://www.runoob.com&quot;,
&quot;tags&quot; : [
    &quot;mongodb&quot;,
    &quot;NoSQL&quot;
],
&quot;likes&quot; : 110
</code></pre><p>})</p><h3 id=导入csv文件>导入csv文件
<a class=anchor href=#%e5%af%bc%e5%85%a5csv%e6%96%87%e4%bb%b6>#</a></h3><pre><code>mongoimport --db Trader_1Min_Db --collection Au(T+D) --type csv --file 
D:\\IFData\\md_Au(T+D)_20170101_20170531\\md_Au(T+D)_2017010301.csv 
--headerline --upsert --ignoreBlanks
</code></pre><blockquote><p>注意需要另开一个命令行，在其中运行。
2017-10-25T08:43:40.917+0800 E QUERY [thread1] SyntaxError: missing ; before statement @(shell):1:16 否则就是这个错误</p></blockquote><pre><code>-d    指定把数据导入到哪一个数据库中
-c    指定把数据导入到哪一个集合中
--type    指定导入的数据类型   csv/tsv  逗号或者tab分割值
--file       指定从哪一个文件中导入数据
--headerline    仅适用于导入csv,tsv格式的数据，表示文件中的第一行作为数据头
--upsert  以新增或者更新的方式来导入数据
--f  导入字段名
--ignoreBlanks 忽略空白符
</code></pre><h3 id=导出>导出
<a class=anchor href=#%e5%af%bc%e5%87%ba>#</a></h3><pre><code>mongoexport -d test -c students -o students.dat 
connected to: 127.0.0.1 exported 9 records
# 指明导出格式为csv
mongoexport -d test -c students --csv -f classid,name,age -o students_csv.dat 
connected to: 127.0.0.1 exported 9 records   
</code></pre><h4 id=添加>添加
<a class=anchor href=#%e6%b7%bb%e5%8a%a0>#</a></h4><pre><code>db.collectionName.update({}, {$set:{'key' : value}}, false, true);
</code></pre><h3 id=改>改
<a class=anchor href=#%e6%94%b9>#</a></h3><pre><code>.update
</code></pre><h4 id=更改字段名称>更改字段名称
<a class=anchor href=#%e6%9b%b4%e6%94%b9%e5%ad%97%e6%ae%b5%e5%90%8d%e7%a7%b0>#</a></h4><pre><code>db.CollectionName.update({}, {$rename : {&quot;OldName&quot; : &quot;NewName&quot;}}, false, true)
# false为如不存在update记录，是否插入新的纪录  
# ture位置为更新全部数据，如设定false 则为只更新第一条
# 另外 没有输入名称时没有输全，也会显示查找，但不会执行更改
</code></pre><h4 id=统配>统配
<a class=anchor href=#%e7%bb%9f%e9%85%8d>#</a></h4><pre><code>db.CollectionName.update(&lt;query&gt;, &lt;update&gt;,{upsert : &lt;boolean&gt;, multi : &lt;boolean&gt;, 
writeConcern : &lt;document&gt;})
# query : update 查找条件，类似sql update查询内where后面的
# update : update的对象和一些更新的操作符（如$,$inc...）等，也可以理解为sql update查
#&gt;询内set后面的
# upsert : 可选，这个参数的意思是，如果不存在update的记录，是否插入objNew,true为插
#&gt;入，默认是false，不插入。
# multi : 可选，mongodb 默认是false,只更新找到的第一条记录，如果这个参数为true,就把
#&gt;按条件查出来多条记录全部更新。
# writeConcern :可选，抛出异常的级别。
</code></pre><h5 id=eg>eg
<a class=anchor href=#eg>#</a></h5><pre><code>db.col.update({'title':'MongoDB'},{$set:{'title':'IamNewTitle'}})
</code></pre><h4 id=删除文档>删除文档
<a class=anchor href=#%e5%88%a0%e9%99%a4%e6%96%87%e6%a1%a3>#</a></h4><p>remove()函数是用来移除集合中的数据。</p><pre><code>db.collection.remove(
&lt;query&gt;,
&lt;justOne&gt;
)
</code></pre><h5 id=26版以后>2.6版以后
<a class=anchor href=#26%e7%89%88%e4%bb%a5%e5%90%8e>#</a></h5><pre><code>db.collection.remove(
&lt;query&gt;,
{
justOne: &lt;boolean&gt;,
writeConcern: &lt;document&gt;
})
</code></pre><blockquote><p>参数说明：
query :（可选）删除的文档的条件。
justOne : （可选）如果设为 true 或 1，则只删除一个文档。
writeConcern :（可选）抛出异常的级别。</p></blockquote><pre><code>db.col.remove({})   #删除所有 (就很恐怖)
</code></pre><h4 id=查询文档>查询文档
<a class=anchor href=#%e6%9f%a5%e8%af%a2%e6%96%87%e6%a1%a3>#</a></h4><table><thead><tr><th style=text-align:left>操作</th><th style=text-align:center>格式</th><th style=text-align:center>范例</th><th style=text-align:right>RDBMS中的类似语句</th></tr></thead><tbody><tr><td style=text-align:left>等于</td><td style=text-align:center>{<code>&lt;key>:&lt;value></code>}</td><td style=text-align:center><code>db.col.find({"by":"教程"}).pretty()</code></td><td style=text-align:right><code>where by = '教程'</code></td></tr><tr><td style=text-align:left>小于</td><td style=text-align:center>{<code>&lt;key>:{$lt:&lt;value></code>}}</td><td style=text-align:center><code>db.col.find({"likes":{$lt:50}}).pretty()</code></td><td style=text-align:right><code>where likes &lt; 50</code></td></tr><tr><td style=text-align:left>小于或等于</td><td style=text-align:center>{<code>&lt;key>:{$lte:&lt;value></code>}}</td><td style=text-align:center><code>db.col.find({"likes":{$lte:50}}).pretty()</code></td><td style=text-align:right>&mldr;</td></tr><tr><td style=text-align:left>大于</td><td style=text-align:center>{<code>&lt;key>:{$gt:&lt;value></code>}}</td><td style=text-align:center><code>db.col.find({"likes":{$gt:50}}).pretty()</code></td><td style=text-align:right>&mldr;</td></tr><tr><td style=text-align:left>大于或等于</td><td style=text-align:center>{<code>&lt;key>:{$gte:&lt;value></code>}}</td><td style=text-align:center><code>db.col.find({"likes":{$gte:50}}).pretty()</code></td><td style=text-align:right>&mldr;</td></tr><tr><td style=text-align:left>不等于</td><td style=text-align:center>{<code>&lt;key>:{$ne:&lt;value></code>}}</td><td style=text-align:center><code>db.col.find({"likes":{$ne:50}}).pretty()</code></td><td style=text-align:right><code>where likes != 50</code></td></tr></tbody></table><h5 id=and>And
<a class=anchor href=#and>#</a></h5><p>find可以传入多个键(key),逗号隔开：</p><pre><code>db.col.find({key1:value1, key2:value2}).pretty()
db.col.find({&quot;by&quot;:&quot;教程&quot;, &quot;title&quot;:&quot;MongoDB &quot;}).pretty()
#类似于
WHERE by='教程' AND title='MongoDB '
</code></pre><h5 id=or>Or
<a class=anchor href=#or>#</a></h5><pre><code>db.test.find({$[{key1:value1},(key2:value2)]}).pretty()     #注意小中大括号😰
db.col.find({&quot;likes&quot;: {$gt:50}, $or: [{&quot;by&quot;: &quot;教程&quot;},{&quot;title&quot;: &quot;MongoDB &quot;}]})
</code></pre><h5 id=and-与-or>And 与 Or
<a class=anchor href=#and-%e4%b8%8e-or>#</a></h5><pre><code>db.col.find({&quot;likes&quot;: {$gt:50}, $or: [{&quot;by&quot;: &quot;教程&quot;},{&quot;title&quot;: &quot;MongoDB &quot;}]})
#类似于（其中pretty()是显示样式）
where likes&gt;50 AND (by = '教程' OR title = 'MongoDB ‘
</code></pre><h4 id=简写说明>简写说明
<a class=anchor href=#%e7%ae%80%e5%86%99%e8%af%b4%e6%98%8e>#</a></h4><table><thead><tr><th style=text-align:left></th><th style=text-align:center></th><th style=text-align:center></th><th style=text-align:right></th></tr></thead><tbody><tr><td style=text-align:left>$gt</td><td style=text-align:center>&mdash;&mdash;&ndash;</td><td style=text-align:center>greater than</td><td style=text-align:right>></td></tr><tr><td style=text-align:left>$gte</td><td style=text-align:center>&mdash;&mdash;&mdash;</td><td style=text-align:center>gt equal</td><td style=text-align:right>>=</td></tr><tr><td style=text-align:left>$lt</td><td style=text-align:center>&mdash;&mdash;&ndash;</td><td style=text-align:center>less than</td><td style=text-align:right>&lt;</td></tr><tr><td style=text-align:left>$lte</td><td style=text-align:center>&mdash;&mdash;&mdash;</td><td style=text-align:center>lt equal</td><td style=text-align:right>&lt;=</td></tr><tr><td style=text-align:left>$ne</td><td style=text-align:center>&mdash;&mdash;&mdash;&ndash;</td><td style=text-align:center>not equal</td><td style=text-align:right>!=</td></tr><tr><td style=text-align:left>$eq</td><td style=text-align:center>&mdash;&mdash;&ndash;</td><td style=text-align:center>equal</td><td style=text-align:right>=</td></tr></tbody></table><h5 id=type>Type
<a class=anchor href=#type>#</a></h5><pre><code>db.col.find({&quot;title&quot; : {$type : 2}})    #获取“col”集合中title为String的数据
</code></pre><p><strong>对照表：</strong></p><table><thead><tr><th style=text-align:left>类型</th><th style=text-align:center>数字</th><th style=text-align:right>备注</th></tr></thead><tbody><tr><td style=text-align:left>Double</td><td style=text-align:center>1</td><td style=text-align:right></td></tr><tr><td style=text-align:left>String</td><td style=text-align:center>2</td><td style=text-align:right></td></tr><tr><td style=text-align:left>Object</td><td style=text-align:center>3</td><td style=text-align:right></td></tr><tr><td style=text-align:left>Array</td><td style=text-align:center>4</td><td style=text-align:right></td></tr><tr><td style=text-align:left>Binary data</td><td style=text-align:center>5</td><td style=text-align:right></td></tr><tr><td style=text-align:left>Undefined</td><td style=text-align:center>6</td><td style=text-align:right>已废弃。</td></tr><tr><td style=text-align:left>Object id</td><td style=text-align:center>7</td><td style=text-align:right></td></tr><tr><td style=text-align:left>Boolean</td><td style=text-align:center>8</td><td style=text-align:right></td></tr><tr><td style=text-align:left>Date</td><td style=text-align:center>9</td><td style=text-align:right></td></tr><tr><td style=text-align:left>Null</td><td style=text-align:center>10</td><td style=text-align:right></td></tr><tr><td style=text-align:left>Regular Expression</td><td style=text-align:center>11</td><td style=text-align:right></td></tr><tr><td style=text-align:left>JavaScript</td><td style=text-align:center>13</td><td style=text-align:right></td></tr><tr><td style=text-align:left>Symbol</td><td style=text-align:center>14</td><td style=text-align:right></td></tr><tr><td style=text-align:left>JavaScript (with scope)</td><td style=text-align:center>15</td><td style=text-align:right></td></tr><tr><td style=text-align:left>32-bit integer</td><td style=text-align:center>16</td><td style=text-align:right></td></tr><tr><td style=text-align:left>Timestamp</td><td style=text-align:center>17</td><td style=text-align:right></td></tr><tr><td style=text-align:left>64-bit integer</td><td style=text-align:center>18</td><td style=text-align:right></td></tr><tr><td style=text-align:left>Min key</td><td style=text-align:center>255</td><td style=text-align:right>Query with -1.</td></tr><tr><td style=text-align:left>Max key</td><td style=text-align:center>127</td><td style=text-align:right></td></tr></tbody></table><h5 id=limit-skip方法>Limit() Skip()方法
<a class=anchor href=#limit-skip%e6%96%b9%e6%b3%95>#</a></h5><pre><code>db.col.find({},{&quot;title&quot;:1,_id:0}).limit(2)
</code></pre><blockquote><p>参数说明：
“title”后1为判断语句，表示是否只查询“title”内容0为否，显示这条的全部信息。_id的0亦为判断表示是否显示“_id”内容。limit为限制搜索信息条数。</p></blockquote><pre><code>db.col.find({},{&quot;title&quot;:1,_id:0}).limit(1).skip(1)
skip(NUMBER)        #NUMBER为阶跃，即每隔几条数据来搜索
</code></pre><h3 id=排序>排序
<a class=anchor href=#%e6%8e%92%e5%ba%8f>#</a></h3><pre><code>db.COLLECTION_NAME.find().sort({KEY:1})     #KEY后数字可为1OR-1，升序OR降序
db.col.find({},{&quot;title&quot;:1,_id:0}).sort({&quot;likes&quot;:-1}     #按“likes”降序排序
</code></pre><hr><hr><h3 id=mongodb-索引--------font-colorcrimson建立索引干嘛font>MongoDB 索引 （建立索引干嘛……）
<a class=anchor href=#mongodb-%e7%b4%a2%e5%bc%95--------font-colorcrimson%e5%bb%ba%e7%ab%8b%e7%b4%a2%e5%bc%95%e5%b9%b2%e5%98%9bfont>#</a></h3><h4 id=ensureindex-方法>ensureIndex() 方法
<a class=anchor href=#ensureindex-%e6%96%b9%e6%b3%95>#</a></h4><pre><code>db.COLLECTION_NAME.ensureIndex({KEY:1})
# Key 值为要创建的索引字段，1为指定按升序创建索引，降序-1
</code></pre><h3 id=聚合>聚合
<a class=anchor href=#%e8%81%9a%e5%90%88>#</a></h3><h4 id=aggregate方法>aggregate()方法
<a class=anchor href=#aggregate%e6%96%b9%e6%b3%95>#</a></h4><pre><code>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
db.mycol.aggregate([{$group : {_id : &quot;$by_user&quot;, num_tutorial : {$sum : 1}}}])
#类似于
select by_user, count(*) from mycol group by by_user
</code></pre><blockquote><p>输出结果：
{ &ldquo;_id&rdquo; : &ldquo;Neo4j&rdquo;, &ldquo;num_tutorial&rdquo; : 1 }
{ &ldquo;_id&rdquo; : &ldquo;runoob.com&rdquo;, &ldquo;num_tutorial&rdquo; : 2 }
{ &ldquo;_id&rdquo; : null, &ldquo;num_tutorial&rdquo; : 1 }</p></blockquote><blockquote><p>参数说明：“$by_user” 即为分类依据，并打印出来（如上）。
num_tutorial 仅为显示提示，可以更改为任意提示甚至汉字。
$sum : 1 其中1为每次计数值，即重复一次加几。1+1+1+1…… ：重复一次加1；0.1+0.1+0.1……重复一次加0.1。这个意思</p></blockquote><h5 id=计算符>计算符：
<a class=anchor href=#%e8%ae%a1%e7%ae%97%e7%ac%a6>#</a></h5><table><thead><tr><th style=text-align:left>表达式</th><th style=text-align:center>描述</th><th style=text-align:center>实例</th></tr></thead><tbody><tr><td style=text-align:left>$sum</td><td style=text-align:center>计算总和。</td><td style=text-align:center><code>db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])</code></td></tr><tr><td style=text-align:left>$avg</td><td style=text-align:center>计算平均值</td><td style=text-align:center><code>db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])</code></td></tr><tr><td style=text-align:left>$min</td><td style=text-align:center>获取集合中所有文档对应值得最小值。</td><td style=text-align:center><code>db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])</code></td></tr><tr><td style=text-align:left>$max</td><td style=text-align:center>获取集合中所有文档对应值得最大值。</td><td style=text-align:center><code>db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])</code></td></tr><tr><td style=text-align:left>$push</td><td style=text-align:center>在结果文档中插入值到一个数组中。</td><td style=text-align:center><code>db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])</code></td></tr><tr><td style=text-align:left>$addToSet</td><td style=text-align:center>在结果文档中插入值到一个数组中，但不创建副本。</td><td style=text-align:center><code>db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])</code></td></tr><tr><td style=text-align:left>$first</td><td style=text-align:center>根据资源文档的排序获取第一个文档数据。</td><td style=text-align:center><code>db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])</code></td></tr><tr><td style=text-align:left>$last</td><td style=text-align:center>根据资源文档的排序获取最后一个文档数据</td><td style=text-align:center><code>db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])</code></td></tr></tbody></table><h3 id=条件操作符>条件操作符
<a class=anchor href=#%e6%9d%a1%e4%bb%b6%e6%93%8d%e4%bd%9c%e7%ac%a6>#</a></h3><pre><code>$gt     大于
$lt     小于
$gte        大于等于
$lte        小于等于
</code></pre><h4 id=eg-1>eg：
<a class=anchor href=#eg-1>#</a></h4><pre><code>db.col.find({likes : {$gte : 100}})
# 查询“col”集合中&quot;likes&quot;大于100的数据
# 比较与 `SQL       Select * from col where likes &gt;=100;`
</code></pre><h4 id=取前n条数据>取前n条数据
<a class=anchor href=#%e5%8f%96%e5%89%8dn%e6%9d%a1%e6%95%b0%e6%8d%ae>#</a></h4><pre><code>.find().limit(n)
</code></pre><h3 id=执行顺序>执行顺序
<a class=anchor href=#%e6%89%a7%e8%a1%8c%e9%a1%ba%e5%ba%8f>#</a></h3><pre><code>skip(), limilt(), sort()三个放在一起执行的时候，执行的顺序是先 sort(), 
然后是 skip()，最后是显示的 limit()。
</code></pre><h3 id=数据导出>数据导出
<a class=anchor href=#%e6%95%b0%e6%8d%ae%e5%af%bc%e5%87%ba>#</a></h3><pre><code>mongoexport -d *** -c *** -o ***
# -d 后为 dbName
   -c 后为 collectionName
   -o 后为 outputFileName 导出文件名
</code></pre><p>名字都不用加引号，直接上的~， 然后导出格式都是json 那样，不管后缀是什么用文本打开都是一个样子——骗鬼👻</p><h3 id=数据导入>数据导入
<a class=anchor href=#%e6%95%b0%e6%8d%ae%e5%af%bc%e5%85%a5>#</a></h3><pre><code> mongoimport -h 127.0.0.1 -p 27017 -d Trader_1Min_Db -c ag1806 --file 
/home/ian/Downloads/ag1806.json
</code></pre><h3 id=linux-下使用robo3t错误>Linux 下使用Robo3T错误
<a class=anchor href=#linux-%e4%b8%8b%e4%bd%bf%e7%94%a8robo3t%e9%94%99%e8%af%af>#</a></h3><p>错误最后字段为：已放弃 (核心已转储)</p><pre><code>mkdir ~/robo-backup
mv robo3t-1.1.1-linux-x86_64-*/lib/libstdc++* 
</code></pre><p>~/robo-backup/robo3t-1.1.1-linux-x86_64-*/bin/robo3t
移动备份之后即可运行</p><h3 id=for-python>For Python
<a class=anchor href=#for-python>#</a></h3><h4 id=pymongo>PyMongo
<a class=anchor href=#pymongo>#</a></h4><pre><code>from pymongo import MongoClient
client = MongoClient(&quot;localhost&quot;, 27017)
client.server_info()    
# 查看信息，检测是否成功连接
db = client[&quot;someData&quot;]
collection = db.zn1801_30Min
# 两种命名方式，一种是直接.     一种是使用“”
</code></pre><p>乖乖的用双引号，因为，在这里的单双引号是区分的… 我现在也懒得去管它是字符字符串的什么鬼。┏┛墓┗┓&mldr;(((m -__-)m</p><h4 id=insert>insert
<a class=anchor href=#insert>#</a></h4><pre><code>collection.insert( {&quot;name&quot;:&quot;text&quot; } )
</code></pre><h4 id=find>find
<a class=anchor href=#find>#</a></h4><pre><code>d = {u'Volume':{'$gte':50353,'$lte':50355}}
a = collection.find(d)
</code></pre><p>最小与最大，另外，find出来的东西是数据库指针，需要用<code>for...in...</code>来循环取出内容来</p><h3 id=查询库名>查询库名
<a class=anchor href=#%e6%9f%a5%e8%af%a2%e5%ba%93%e5%90%8d>#</a></h3><pre><code>from pymongo import MongoClient
client = MongoClient('localhost', 27017)
client.database_names()
</code></pre><blockquote><p>[u&rsquo;Trader_1Min_Db&rsquo;, u&rsquo;Trader_30Min_Db&rsquo;, u&rsquo;Trader_Tick_Db&rsquo;, u&rsquo;VnTrader_Log_Db&rsquo;, u&rsquo;VnTrader_Position_Db&rsquo;, u&rsquo;admin&rsquo;, u&rsquo;local&rsquo;, u&rsquo;someData&rsquo;, u&rsquo;test']</p></blockquote><h3 id=查询集合名>查询集合名
<a class=anchor href=#%e6%9f%a5%e8%af%a2%e9%9b%86%e5%90%88%e5%90%8d>#</a></h3><pre><code>collectionNames = client[dbName].collection_names()
print collectionNames
</code></pre><h1 id=使用>使用
<a class=anchor href=#%e4%bd%bf%e7%94%a8>#</a></h1><p>其读写速度还是可以的… 二十万条数据查询的话不到一秒，然而… 频繁多量的读取，再加上不断地往其中写入就出问题了…… 卡的极慢…简直恐怖（数个小时的延迟 怕不怕）。（当然以上情况是完全没有做任何优化的情况（直接<code>insert</code> 、<code>find</code>），不知道优化之后会怎样） 另外不知道不增加条数，去增加内容会怎样…… emm 果然还是缓存比较好用…在高速多量多频次的情况下还是用内存里面不去手动做任何保存比较好。 等积攒够量之后再去保存，就好比文件压缩不去一个个小文件传输一个道理。</p></article><footer class=book-footer><div class="flex flex-wrap justify-between"></div><script>(function(){function e(e){const t=window.getSelection(),n=document.createRange();n.selectNodeContents(e),t.removeAllRanges(),t.addRange(n)}document.querySelectorAll("pre code").forEach(t=>{t.addEventListener("click",function(){if(window.getSelection().toString())return;e(t.parentElement),navigator.clipboard&&navigator.clipboard.writeText(t.parentElement.textContent)})})})()</script></footer><div class=book-comments></div><label for=menu-control class="hidden book-menu-overlay"></label></div><aside class=book-toc><div class=book-toc-content><nav id=TableOfContents><ul><li><a href=#mongodb笔记>MongoDB笔记</a></li><li><a href=#数据迁移>数据迁移</a><ul><li><a href=#使用-mysqldump>使用 <code>mysqldump</code></a></li><li><a href=#font-colorff5000注意事项font>注意事项</a></li><li><a href=#操作命令简单记录>操作命令简单记录</a></li><li><a href=#更新添加文档>更新、添加文档</a></li><li><a href=#导入csv文件>导入csv文件</a></li><li><a href=#导出>导出</a></li><li><a href=#改>改</a></li><li><a href=#排序>排序</a></li><li><a href=#mongodb-索引--------font-colorcrimson建立索引干嘛font>MongoDB 索引 （建立索引干嘛……）</a></li><li><a href=#聚合>聚合</a></li><li><a href=#条件操作符>条件操作符</a></li><li><a href=#执行顺序>执行顺序</a></li><li><a href=#数据导出>数据导出</a></li><li><a href=#数据导入>数据导入</a></li><li><a href=#linux-下使用robo3t错误>Linux 下使用Robo3T错误</a></li><li><a href=#for-python>For Python</a></li><li><a href=#查询库名>查询库名</a></li><li><a href=#查询集合名>查询集合名</a></li></ul></li></ul></nav></div></aside></main></body></html>